//红包功能需要满足哪些具体规则呢？

//  1.所有人抢到的金额之和要等于红包金额，不能多也不能少。
//  2.每个人至少抢到1分钱。
//  3.要保证红包拆分的金额尽可能分布均衡，不要出现两极分化太严重的情况。

// 为了避免出现高并发引起的一些问题，每个人领取红包的金额不能在领的时候才计算，必须先计算好每个红包拆出的金额，并把它们放在一个队列里，领取红包的用户要在队列中找到属于自己的那一份。”


//方法1：二倍均值法

//假设剩余红包金额为m元，剩余人数为n，那么有如下公式。
//每次抢到的金额=随机区间[0.01， m/n×2-0.01]元
//这个公式，保证了每次随机金额的平均值是相等的，不会因为抢红包的先后顺序而造成不公平。

function divideRedBag(totalAmount,totalPeopleNum) {
  let arr = [];
  let restAmount = totalAmount;
  let restPeopleNum = totalPeopleNum;
  for (let i = 0; i < totalPeopleNum-1; i++) {
    let amount =Math.random() * ((totalAmount / totalPeopleNum * 2) - 0.01) + 0.01;
    amount=+amount.toFixed(2)
    restAmount -= amount ;
    restPeopleNum -= 1;
    arr.push(amount);
  }
  arr.push(+restAmount.toFixed(2));
  return arr;
} 

console.log(divideRedBag(1000,10));
